package com.bravo.friend.service;

import com.bravo.friend.client.UserClient;
import com.bravo.friend.entity.Friend;
import com.bravo.friend.entity.NoFriend;
import com.bravo.friend.repository.FriendRepository;
import com.bravo.friend.repository.NoFriendRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author: Yuyong
 * @create: 2019-08-30 17:29
 **/

@Service
public class FriendService {

    @Autowired
    private FriendRepository friendRepository;

    @Autowired
    private NoFriendRepository noFriendRepository;

    @Autowired
    private UserClient userClient;

    /**
     * 删除好友
     * @param userId
     * @param friendId
     */
    public void deleteFriend(String userId,String friendId){
        friendRepository.deleteFriend(userId,friendId);
        friendRepository.updateLike(friendId,userId,"0");
        userClient.incFollowCount(userId,-1);//减少自己的关注数
        userClient.incFansCount(friendId,-1);//减少对方的关注数
        addNoFriend(userId,friendId);//向不喜欢表中添加记录
    }

    /**
     * 向不喜欢列表中添加记录
     * @param userId
     * @param friendId
     */
    public void addNoFriend(String userId,String friendId){
        NoFriend noFriend = new NoFriend();
        noFriend.setUserId(userId);
        noFriend.setFriendId(friendId);
        noFriendRepository.save(noFriend);
    }

    public int addFriend(String userId,String friendId){

        //判断如果用户已经添加了这个好友,则不进行任何操作,返回0
        if(friendRepository.selectCount(userId,friendId) > 0){
            return 0;
        }
        userClient.incFollowCount(userId,1);//增加自己的关注数
        userClient.incFansCount(friendId,1);//增加对方的关注数
        //向喜欢表中添加记录
        Friend friend = new Friend();
        friend.setUserId(userId);
        friend.setFriendId(friendId);
        friend.setIsLike("0");
        friendRepository.save(friend);
        //判断对方是否喜欢你,如果喜欢,将isLike设置为1
        if (friendRepository.selectCount(friendId,userId) > 0){
            friendRepository.updateLike(userId,friendId,"1");
            friendRepository.updateLike(friendId,userId,"1");
        }
        return 1;
    }
}
